package com.tmt.datatable.editor;

import java.io.File;
import java.io.IOException;

/**
 * Created by ThreeManTeam on 2017/6/3.
 */
public interface IFileDataHolder {

    /**
     * 设置文件数据归属的对象的属性名称。
     * @param fieldName 支持a.b[].c格式
     */
    void setFieldName(String fieldName);

    /**
     * 设置文件数据对象。
     * @param fileData
     */
    void setFileData(Object fileData);

    /**
     * 得到文件数据归属的对象属性名称。
     * @return
     */
    String getFieldName();

    /**
     * 得到文件名称。
     * @return
     */
    String getFileName();

    /**
     * 得到文件长度。
     * @return
     */
    Long getFileLength();

    /**
     * 将文件数据写入文件中。
     * @param file
     */
    void transferTo(File file) throws IOException;

    /**
     * 校验文件是否合法
     * @param clazz
     * @param propName
     */
    void validate(Class<?> clazz, String propName) throws Exception;

    /**
     * 构造一个新的对象。
     * @return
     */
    IFileDataHolder newInstance();

}
